popover bar: Add setters
authorMatthias Clasen <mclasen@redhat.com>
Sun, 9 Jun 2019 16:04:12 +0000 (16:04 +0000)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 9 Jun 2019 17:40:51 +0000 (17:40 +0000)
Add setters/getters for the menu-model property.

gtk/gtkpopoverbar.c
gtk/gtkpopoverbar.h

index 657eeb63f6b9aa8a338274e8bb186f7f12dbb9bd..49c133745533870168acb126db78c1044615afea 100644 (file)
@@ -390,35 +390,6 @@ tracker_insert (GtkMenuTrackerItem *item,
     g_warning ("Don't know how to handle this item");
 }
 
-static void
-gtk_popover_bar_set_menu_model (GtkPopoverBar *bar,
-                                GMenuModel    *model)
-{
-  if (g_set_object (&bar->model, model))
-    {
-      GtkWidget *child;
-      GtkActionMuxer *muxer;
-
-      while ((child = gtk_widget_get_first_child (GTK_WIDGET (bar))))
-        gtk_widget_destroy (child);
-
-      g_clear_pointer (&bar->tracker, gtk_menu_tracker_free);
-
-      muxer = _gtk_widget_get_action_muxer (GTK_WIDGET (bar), TRUE);
-      bar->tracker = gtk_menu_tracker_new (GTK_ACTION_OBSERVABLE (muxer),
-                                           model,
-                                           FALSE,
-                                           TRUE,
-                                           FALSE,
-                                           NULL,
-                                           tracker_insert,
-                                           tracker_remove,
-                                           bar);
-
-      g_object_notify_by_pspec (G_OBJECT (bar), bar_props[PROP_MENU_MODEL]);
-    }
-}
-
 static void
 gtk_popover_bar_set_property (GObject      *object,
                               guint         property_id,
@@ -526,3 +497,43 @@ gtk_popover_bar_new_from_model (GMenuModel *model)
                        "menu-model", model,
                        NULL);
 }
+
+void
+gtk_popover_bar_set_menu_model (GtkPopoverBar *bar,
+                                GMenuModel    *model)
+{
+  g_return_if_fail (GTK_IS_POPOVER_BAR (bar));
+  g_return_if_fail (G_IS_MENU_MODEL (model));
+
+  if (g_set_object (&bar->model, model))
+    {
+      GtkWidget *child;
+      GtkActionMuxer *muxer;
+
+      while ((child = gtk_widget_get_first_child (GTK_WIDGET (bar))))
+        gtk_widget_destroy (child);
+
+      g_clear_pointer (&bar->tracker, gtk_menu_tracker_free);
+
+      muxer = _gtk_widget_get_action_muxer (GTK_WIDGET (bar), TRUE);
+      bar->tracker = gtk_menu_tracker_new (GTK_ACTION_OBSERVABLE (muxer),
+                                           model,
+                                           FALSE,
+                                           TRUE,
+                                           FALSE,
+                                           NULL,
+                                           tracker_insert,
+                                           tracker_remove,
+                                           bar);
+
+      g_object_notify_by_pspec (G_OBJECT (bar), bar_props[PROP_MENU_MODEL]);
+    }
+}
+
+GMenuModel *
+gtk_popover_bar_get_menu_model (GtkPopoverBar *bar)
+{
+  g_return_val_if_fail (GTK_IS_POPOVER_BAR (bar), NULL);
+
+  return bar->model;
+}
index 5b74e0bd969f4f3376d4a5db465f12ae71b05d74..eca22b5828cbf281f80ef6ae7e062820083d7907 100644 (file)
@@ -36,10 +36,16 @@ G_BEGIN_DECLS
 typedef struct _GtkPopoverBar GtkPopoverBar;
 
 GDK_AVAILABLE_IN_ALL
-GType      gtk_popover_bar_get_type        (void) G_GNUC_CONST;
+GType        gtk_popover_bar_get_type       (void) G_GNUC_CONST;
 
 GDK_AVAILABLE_IN_ALL
-GtkWidget* gtk_popover_bar_new_from_model  (GMenuModel *model);
+GtkWidget *  gtk_popover_bar_new_from_model (GMenuModel    *model);
+
+GDK_AVAILABLE_IN_ALL
+void         gtk_popover_bar_set_menu_model (GtkPopoverBar *bar,
+                                             GMenuModel    *model);
+GDK_AVAILABLE_IN_ALL
+GMenuModel * gtk_popover_bar_get_menu_model (GtkPopoverBar *bar);
 
 G_END_DECLS